React Compiler
React Forget
React Compiler – React
React Labs: 私達のこれまでの取り組み - 2024年2月版 – React
React Labs: 私達のこれまでの取り組み - 2023年3月版 – React
2023/3/28現在、Metaの内部で使われている
そのうち、OSS化する予定
React Labs: 私達のこれまでの取り組み - 2022年6月版 – React
Please note that the annotation mode is a temporary one to aid early adopters, and that we don’t intend for the "use memo" directive to be used for the long term. ref
'use memo'
/miyamonz/React Foreget
https://tnoyan.hatenablog.com/entry/2021/12/10/172624
メモ化処理の自動化
人間がuseMemo、memoを触ることをへらす
今までの「無駄にrenderingされるから自分でmemo化する」という判断が宣言的でないmrsekut.icon
どういう風に使われて、どのタイミングでrenderingされるのか、といったことを意識する必要がある
React Forget は何を「忘れ」させてくれるのか
react compilerがcomponentをtranspileして、変更があったかどうかを判断するコードが生成される
エッセイ: React with React Compiler は "Just JavaScript" であるか · Ubugeeei work-log · Discussion #429 · GitHub
React Compilerによって、Reactの意味論は維持されるが、JSの意味論が変わってしまう
Component内に書いた関数が何故か実行されない、という挙動になる
あまり関係ないけど、React Adbanced 2023の元のコードが、Reactでそんな描き方しなくない?というコードになってるのが気になるmrsekut.icon
code:ts
function VideoTag({ heading, video, filter }) {
const filteredVideos = [];
for (const video of videos) {
if (applyFilter(video, filter)) {
filteredVideos.push(video);
}
}
...
}
Componentの中でuseState使わずに、filteredVideosのようなmutableな変数を使うと冪等にならなくないか
あまりちゃんと考えてないけど、useMemoやuseCallbackって、そもそも冪等な計算のmemo化をする部分なので、JSの意味論的にそこまで違和感が生まれないのでは、という気もする